home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / ScrollPaneLayout.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  7.9 KB  |  429 lines

  1. package javax.swing;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.Dimension;
  6. import java.awt.Insets;
  7. import java.awt.LayoutManager;
  8. import java.awt.Rectangle;
  9. import java.io.Serializable;
  10. import javax.swing.border.Border;
  11.  
  12. public class ScrollPaneLayout implements LayoutManager, ScrollPaneConstants, Serializable {
  13.    protected JViewport viewport;
  14.    protected JScrollBar vsb;
  15.    protected JScrollBar hsb;
  16.    protected JViewport rowHead;
  17.    protected JViewport colHead;
  18.    protected Component lowerLeft;
  19.    protected Component lowerRight;
  20.    protected Component upperLeft;
  21.    protected Component upperRight;
  22.    protected int vsbPolicy = 20;
  23.    protected int hsbPolicy = 30;
  24.  
  25.    public void addLayoutComponent(String var1, Component var2) {
  26.       if (var1.equals("VIEWPORT")) {
  27.          this.viewport = (JViewport)this.addSingletonComponent(this.viewport, var2);
  28.       } else if (var1.equals("VERTICAL_SCROLLBAR")) {
  29.          this.vsb = (JScrollBar)this.addSingletonComponent(this.vsb, var2);
  30.       } else if (var1.equals("HORIZONTAL_SCROLLBAR")) {
  31.          this.hsb = (JScrollBar)this.addSingletonComponent(this.hsb, var2);
  32.       } else if (var1.equals("ROW_HEADER")) {
  33.          this.rowHead = (JViewport)this.addSingletonComponent(this.rowHead, var2);
  34.       } else if (var1.equals("COLUMN_HEADER")) {
  35.          this.colHead = (JViewport)this.addSingletonComponent(this.colHead, var2);
  36.       } else if (var1.equals("LOWER_LEFT_CORNER")) {
  37.          this.lowerLeft = this.addSingletonComponent(this.lowerLeft, var2);
  38.       } else if (var1.equals("LOWER_RIGHT_CORNER")) {
  39.          this.lowerRight = this.addSingletonComponent(this.lowerRight, var2);
  40.       } else if (var1.equals("UPPER_LEFT_CORNER")) {
  41.          this.upperLeft = this.addSingletonComponent(this.upperLeft, var2);
  42.       } else {
  43.          if (!var1.equals("UPPER_RIGHT_CORNER")) {
  44.             throw new IllegalArgumentException("invalid layout key " + var1);
  45.          }
  46.  
  47.          this.upperRight = this.addSingletonComponent(this.upperRight, var2);
  48.       }
  49.  
  50.    }
  51.  
  52.    protected Component addSingletonComponent(Component var1, Component var2) {
  53.       if (var1 != null && var1 != var2) {
  54.          var1.getParent().remove(var1);
  55.       }
  56.  
  57.       return var2;
  58.    }
  59.  
  60.    public JViewport getColumnHeader() {
  61.       return this.colHead;
  62.    }
  63.  
  64.    public Component getCorner(String var1) {
  65.       if (var1.equals("LOWER_LEFT_CORNER")) {
  66.          return this.lowerLeft;
  67.       } else if (var1.equals("LOWER_RIGHT_CORNER")) {
  68.          return this.lowerRight;
  69.       } else if (var1.equals("UPPER_LEFT_CORNER")) {
  70.          return this.upperLeft;
  71.       } else {
  72.          return var1.equals("UPPER_RIGHT_CORNER") ? this.upperRight : null;
  73.       }
  74.    }
  75.  
  76.    public JScrollBar getHorizontalScrollBar() {
  77.       return this.hsb;
  78.    }
  79.  
  80.    public int getHorizontalScrollBarPolicy() {
  81.       return this.hsbPolicy;
  82.    }
  83.  
  84.    public JViewport getRowHeader() {
  85.       return this.rowHead;
  86.    }
  87.  
  88.    public JScrollBar getVerticalScrollBar() {
  89.       return this.vsb;
  90.    }
  91.  
  92.    public int getVerticalScrollBarPolicy() {
  93.       return this.vsbPolicy;
  94.    }
  95.  
  96.    public JViewport getViewport() {
  97.       return this.viewport;
  98.    }
  99.  
  100.    /** @deprecated */
  101.    public Rectangle getViewportBorderBounds(JScrollPane var1) {
  102.       return var1.getViewportBorderBounds();
  103.    }
  104.  
  105.    public void layoutContainer(Container var1) {
  106.       JScrollPane var2 = (JScrollPane)var1;
  107.       this.vsbPolicy = var2.getVerticalScrollBarPolicy();
  108.       this.hsbPolicy = var2.getHorizontalScrollBarPolicy();
  109.       Rectangle var3 = new Rectangle(((Component)var2).getSize());
  110.       Insets var4 = var1.getInsets();
  111.       var3.x = var4.left;
  112.       var3.y = var4.top;
  113.       var3.width -= var4.left + var4.right;
  114.       var3.height -= var4.top + var4.bottom;
  115.       Rectangle var5 = new Rectangle(0, var3.y, 0, 0);
  116.       if (this.colHead != null && this.colHead.isVisible()) {
  117.          int var6 = this.colHead.getPreferredSize().height;
  118.          var5.height = var6;
  119.          var3.y += var6;
  120.          var3.height -= var6;
  121.       }
  122.  
  123.       Rectangle var20 = new Rectangle(var3.x, 0, 0, 0);
  124.       if (this.rowHead != null && this.rowHead.isVisible()) {
  125.          int var7 = this.rowHead.getPreferredSize().width;
  126.          var20.width = var7;
  127.          var3.x += var7;
  128.          var3.width -= var7;
  129.       }
  130.  
  131.       Border var21 = var2.getViewportBorder();
  132.       Insets var8;
  133.       if (var21 != null) {
  134.          var8 = var21.getBorderInsets(var1);
  135.          var3.x += var8.left;
  136.          var3.y += var8.top;
  137.          var3.width -= var8.left + var8.right;
  138.          var3.height -= var8.top + var8.bottom;
  139.       } else {
  140.          var8 = new Insets(0, 0, 0, 0);
  141.       }
  142.  
  143.       var5.x = var3.x;
  144.       var20.y = var3.y;
  145.       Component var9 = this.viewport != null ? this.viewport.getView() : null;
  146.       Dimension var10 = var9 != null ? var9.getPreferredSize() : new Dimension(0, 0);
  147.       Dimension var11 = this.viewport != null ? this.viewport.toViewCoordinates(var3.getSize()) : new Dimension(0, 0);
  148.       boolean var12 = false;
  149.       boolean var13 = false;
  150.       if (var9 instanceof Scrollable) {
  151.          Scrollable var14 = (Scrollable)var9;
  152.          var12 = var14.getScrollableTracksViewportWidth();
  153.          var13 = var14.getScrollableTracksViewportHeight();
  154.       }
  155.  
  156.       Rectangle var23 = new Rectangle(0, var3.y - var8.top, 0, 0);
  157.       boolean var15;
  158.       if (this.vsbPolicy == 22) {
  159.          var15 = true;
  160.       } else if (this.vsbPolicy == 21) {
  161.          var15 = false;
  162.       } else {
  163.          var15 = !var13 && var10.height > var11.height;
  164.       }
  165.  
  166.       if (this.vsb != null && var15) {
  167.          int var16 = this.vsb.getPreferredSize().width;
  168.          var3.width -= var16;
  169.          var23.x = var3.x + var3.width + var8.right;
  170.          var23.width = var16;
  171.       }
  172.  
  173.       Rectangle var24 = new Rectangle(var3.x - var8.left, 0, 0, 0);
  174.       boolean var17;
  175.       if (this.hsbPolicy == 32) {
  176.          var17 = true;
  177.       } else if (this.hsbPolicy == 31) {
  178.          var17 = false;
  179.       } else {
  180.          var17 = !var12 && var10.width > var11.width;
  181.       }
  182.  
  183.       if (this.hsb != null && var17) {
  184.          int var18 = this.hsb.getPreferredSize().height;
  185.          var3.height -= var18;
  186.          var24.y = var3.y + var3.height + var8.bottom;
  187.          var24.height = var18;
  188.          if (this.vsb != null && !var15 && this.vsbPolicy != 21) {
  189.             var11 = this.viewport.toViewCoordinates(var3.getSize());
  190.             var15 = var10.height > var11.height;
  191.             if (var15) {
  192.                int var19 = this.vsb.getPreferredSize().width;
  193.                var3.width -= var19;
  194.                var23.x = var3.x + var3.width + var8.right;
  195.                var23.width = var19;
  196.             }
  197.          }
  198.       }
  199.  
  200.       var23.height = var3.height + var8.top + var8.bottom;
  201.       var24.width = var3.width + var8.left + var8.right;
  202.       var20.height = var3.height;
  203.       var5.width = var3.width;
  204.       if (this.viewport != null) {
  205.          this.viewport.setBounds(var3);
  206.       }
  207.  
  208.       if (this.rowHead != null) {
  209.          this.rowHead.setBounds(var20);
  210.       }
  211.  
  212.       if (this.colHead != null) {
  213.          this.colHead.setBounds(var5);
  214.       }
  215.  
  216.       if (this.vsb != null) {
  217.          if (var15) {
  218.             this.vsb.setVisible(true);
  219.             this.vsb.setBounds(var23);
  220.          } else {
  221.             this.vsb.setVisible(false);
  222.          }
  223.       }
  224.  
  225.       if (this.hsb != null) {
  226.          if (var17) {
  227.             this.hsb.setVisible(true);
  228.             this.hsb.setBounds(var24);
  229.          } else {
  230.             this.hsb.setVisible(false);
  231.          }
  232.       }
  233.  
  234.       if (this.lowerLeft != null) {
  235.          this.lowerLeft.setBounds(var20.x, var24.y, var20.width, var24.height);
  236.       }
  237.  
  238.       if (this.lowerRight != null) {
  239.          this.lowerRight.setBounds(var23.x, var24.y, var23.width, var24.height);
  240.       }
  241.  
  242.       if (this.upperLeft != null) {
  243.          this.upperLeft.setBounds(var20.x, var5.y, var20.width, var5.height);
  244.       }
  245.  
  246.       if (this.upperRight != null) {
  247.          this.upperRight.setBounds(var23.x, var5.y, var23.width, var5.height);
  248.       }
  249.  
  250.    }
  251.  
  252.    public Dimension minimumLayoutSize(Container var1) {
  253.       JScrollPane var2 = (JScrollPane)var1;
  254.       this.vsbPolicy = var2.getVerticalScrollBarPolicy();
  255.       this.hsbPolicy = var2.getHorizontalScrollBarPolicy();
  256.       Insets var3 = var1.getInsets();
  257.       int var4 = var3.left + var3.right;
  258.       int var5 = var3.top + var3.bottom;
  259.       if (this.viewport != null) {
  260.          Dimension var6 = this.viewport.getMinimumSize();
  261.          var4 += var6.width;
  262.          var5 += var6.height;
  263.       }
  264.  
  265.       Border var8 = var2.getViewportBorder();
  266.       if (var8 != null) {
  267.          Insets var7 = var8.getBorderInsets(var1);
  268.          var4 += var7.left + var7.right;
  269.          var5 += var7.top + var7.bottom;
  270.       }
  271.  
  272.       if (this.rowHead != null && this.rowHead.isVisible()) {
  273.          Dimension var9 = this.rowHead.getMinimumSize();
  274.          var4 += var9.width;
  275.          var5 = Math.max(var5, var9.height);
  276.       }
  277.  
  278.       if (this.colHead != null && this.colHead.isVisible()) {
  279.          Dimension var10 = this.colHead.getMinimumSize();
  280.          var4 = Math.max(var4, var10.width);
  281.          var5 += var10.height;
  282.       }
  283.  
  284.       if (this.vsb != null && this.vsbPolicy != 21) {
  285.          Dimension var11 = this.vsb.getMinimumSize();
  286.          var4 += var11.width;
  287.          var5 = Math.max(var5, var11.height);
  288.       }
  289.  
  290.       if (this.hsb != null && this.hsbPolicy != 21) {
  291.          Dimension var12 = this.hsb.getMinimumSize();
  292.          var4 = Math.max(var4, var12.width);
  293.          var5 += var12.height;
  294.       }
  295.  
  296.       return new Dimension(var4, var5);
  297.    }
  298.  
  299.    public Dimension preferredLayoutSize(Container var1) {
  300.       JScrollPane var2 = (JScrollPane)var1;
  301.       this.vsbPolicy = var2.getVerticalScrollBarPolicy();
  302.       this.hsbPolicy = var2.getHorizontalScrollBarPolicy();
  303.       Insets var3 = var1.getInsets();
  304.       int var4 = var3.left + var3.right;
  305.       int var5 = var3.top + var3.bottom;
  306.       Dimension var6 = null;
  307.       Dimension var7 = null;
  308.       Component var8 = null;
  309.       if (this.viewport != null) {
  310.          var6 = this.viewport.getPreferredSize();
  311.          var7 = this.viewport.getViewSize();
  312.          var8 = this.viewport.getView();
  313.       }
  314.  
  315.       if (var6 != null) {
  316.          var4 += var6.width;
  317.          var5 += var6.height;
  318.       }
  319.  
  320.       Border var9 = var2.getViewportBorder();
  321.       if (var9 != null) {
  322.          Insets var10 = var9.getBorderInsets(var1);
  323.          var4 += var10.left + var10.right;
  324.          var5 += var10.top + var10.bottom;
  325.       }
  326.  
  327.       if (this.rowHead != null && this.rowHead.isVisible()) {
  328.          var4 += this.rowHead.getPreferredSize().width;
  329.       }
  330.  
  331.       if (this.colHead != null && this.colHead.isVisible()) {
  332.          var5 += this.colHead.getPreferredSize().height;
  333.       }
  334.  
  335.       if (this.vsb != null && this.vsbPolicy != 21) {
  336.          if (this.vsbPolicy == 22) {
  337.             var4 += this.vsb.getPreferredSize().width;
  338.          } else if (var7 != null && var6 != null) {
  339.             boolean var11 = true;
  340.             if (var8 instanceof Scrollable) {
  341.                var11 = ((Scrollable)var8).getScrollableTracksViewportHeight() ^ true;
  342.             }
  343.  
  344.             if (var11 && var7.height > var6.height) {
  345.                var4 += this.vsb.getPreferredSize().width;
  346.             }
  347.          }
  348.       }
  349.  
  350.       if (this.hsb != null && this.hsbPolicy != 31) {
  351.          if (this.hsbPolicy == 32) {
  352.             var5 += this.hsb.getPreferredSize().height;
  353.          } else if (var7 != null && var6 != null) {
  354.             boolean var12 = true;
  355.             if (var8 instanceof Scrollable) {
  356.                var12 = ((Scrollable)var8).getScrollableTracksViewportWidth() ^ true;
  357.             }
  358.  
  359.             if (var12 && var7.width > var6.width) {
  360.                var5 += this.hsb.getPreferredSize().height;
  361.             }
  362.          }
  363.       }
  364.  
  365.       return new Dimension(var4, var5);
  366.    }
  367.  
  368.    public void removeLayoutComponent(Component var1) {
  369.       if (var1 == this.viewport) {
  370.          this.viewport = null;
  371.       } else if (var1 == this.vsb) {
  372.          this.vsb = null;
  373.       } else if (var1 == this.hsb) {
  374.          this.hsb = null;
  375.       } else if (var1 == this.rowHead) {
  376.          this.rowHead = null;
  377.       } else if (var1 == this.colHead) {
  378.          this.colHead = null;
  379.       } else if (var1 == this.lowerLeft) {
  380.          this.lowerLeft = null;
  381.       } else if (var1 == this.lowerRight) {
  382.          this.lowerRight = null;
  383.       } else if (var1 == this.upperLeft) {
  384.          this.upperLeft = null;
  385.       } else if (var1 == this.upperRight) {
  386.          this.upperRight = null;
  387.       }
  388.  
  389.    }
  390.  
  391.    public void setHorizontalScrollBarPolicy(int var1) {
  392.       switch (var1) {
  393.          case 30:
  394.          case 31:
  395.          case 32:
  396.             this.hsbPolicy = var1;
  397.             return;
  398.          default:
  399.             throw new IllegalArgumentException("invalid horizontalScrollBarPolicy");
  400.       }
  401.    }
  402.  
  403.    public void setVerticalScrollBarPolicy(int var1) {
  404.       switch (var1) {
  405.          case 20:
  406.          case 21:
  407.          case 22:
  408.             this.vsbPolicy = var1;
  409.             return;
  410.          default:
  411.             throw new IllegalArgumentException("invalid verticalScrollBarPolicy");
  412.       }
  413.    }
  414.  
  415.    public void syncWithScrollPane(JScrollPane var1) {
  416.       this.viewport = var1.getViewport();
  417.       this.vsb = var1.getVerticalScrollBar();
  418.       this.hsb = var1.getHorizontalScrollBar();
  419.       this.rowHead = var1.getRowHeader();
  420.       this.colHead = var1.getColumnHeader();
  421.       this.lowerLeft = var1.getCorner("LOWER_LEFT_CORNER");
  422.       this.lowerRight = var1.getCorner("LOWER_RIGHT_CORNER");
  423.       this.upperLeft = var1.getCorner("UPPER_LEFT_CORNER");
  424.       this.upperRight = var1.getCorner("UPPER_RIGHT_CORNER");
  425.       this.vsbPolicy = var1.getVerticalScrollBarPolicy();
  426.       this.hsbPolicy = var1.getHorizontalScrollBarPolicy();
  427.    }
  428. }
  429.